iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0

今天就來講一開始讓初學者會非常困惑的指標好了 (只有我會困惑)
在了解指標之前,必須先了解在C中的資料型態

int x;  //整數資料型態
int *p; //指標資料型態 (指向整數變數的記憶體位址)
p=&x;   //取變數的記憶體位址

實體想像可以如下
https://ithelp.ithome.com.tw/upload/images/20220921/20152495o2qomamIBq.jpg

這邊可以用printf的方式來驗證

printf("%p\n",&x);
printf("%p\n",p);
printf("%d",*p);

以下在來個例子 (面試很多這些奇怪指來指去的例題)
這邊拆成兩個part來講解

//part 1
int x=2,y=3,z=4;
int *p=&x,*q=&y,*r=&z;
*q=*p+*r;
//part2
q=p;
p=r;
*r=*p+*q;
r=&x;
x=*r+*q;

part1是將整數資料型態的變數都定義好之後
再將指標資料型態指到相對應的記憶體位址後再運算
part2比較特別的是

q=p;
q指向p所指向的記憶體位址

p=r;
p指向r所指向的記憶體位址

https://ithelp.ithome.com.tw/upload/images/20220921/20152495xBDysKrrnw.jpg


上一篇
[Day5]進制轉換
下一篇
[Day7]指標2 and 傳值(by value)及傳址(by reference or by address)
系列文
環島C一下自己的人生24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言